$(function(){
	
	
	//获取本地用户数据
	var userInfo = window.localStorage.getItem("userInfo");
	
	if(!userInfo){
		layer("请登录",function(){
			window.location.href = "login.html"
		})
	}
	
	
	// 获取数据
	function getData(vm){
		
		userInfo = JSON.parse(userInfo);
		var userID = userInfo.name_id;
		// 发送数据请求
		ajax("shopCar.php","post",{
			act:"select",
			userID:userID
		},"json",function(data){
			if(data.code==200){
				if(data.data.length>0){
					var mydata = data.data;
					for(var k in mydata){
						mydata[k].check = false;
					}
					console.log(mydata)
			        vm.carList = mydata;
			        vm.isShow = false;
				}
				
			}else{
				layer(data.msg)
			}
		},function(err){
			console.log(err)
		})
	}

	
	var vm = new Vue({
		el:"#app",
		data:{
			carList:[],
			allCheck:false,  // 设置全选状态值
			isShow:false  // 设置是否显示没有数据的按钮
		},
		methods:{
			add:add,
			reduce:reduce,
			del:del,
			check:check,
			allChoice:allChoice  //全选
		},
		created:function(){
			var _this = this;
			getData(_this); // 记得传入this,就是当前实例化的这个vue对象
		},
		computed:{
			allPrice:allPrice  // 计算总价
			
		}
	})
	
	
	// 添加购物车数量事件
	function add(item){
		var oldNum = item.num;  // 原来的数量
		ajax("shopCar.php","get",{
			act:"addNum",
			rowID:item.id,
			oldNum:oldNum
		},"json",function(data){
			if(data.code==200){
				 item.num = parseInt(item.num)+1; // 改变数量
				 item.check = true;
				 isAllCheck(); // 判断是否需要全选
			}else{
				layer(data.msg);
			}
		},function(err){
			console.log(err)
		})
	}
	
	// 减少购物车数量事件
	function reduce(item){
		var oldNum = item.num;  // 原来的数量
		if(oldNum==1){
			layer("商品数量不能少于1")
			return false;
		}
		ajax("shopCar.php","get",{
			act:"reduceNum",
			rowID:item.id,
			oldNum:oldNum
		},"json",function(data){
			if(data.code==200){
				 item.num = parseInt(item.num)-1; // 改变数量
				 item.check = true;
				 isAllCheck(); // 判断是否需要全选
			}else{
				layer(data.msg);
			}
		},function(err){
			console.log(err)
		})
	}
	
	// 购物车删除事件
	function del(item,index){
		ajax("shopCar.php","get",{
			act:"delete",
			rowID:item.id
		},"json",function(data){
			if(data.code==200){
				layer("删除成功");
				var dataArr = vm.carList;
				dataArr.splice(index,1) // 改变了这个数组，然后重新将这个数组赋值给vue的数据数组
				vm.carList = dataArr;
				isAllCheck(); // 判断是否需要全选
				if(vm.carList.length==0){
					vm.isShow = true;
				}
			}else{
				layer(data.msg);
			}
		},function(err){
			console.log(err)
		})
	}
	
	// 单选事件
	function check(item,event){
		item.check = item.check ? false : true;
		isAllCheck(); // 判断是否需要全选
	}
	
	// 计算总价
	function allPrice(){
		// 这里的this指向vm
		var total = 0;
		var dataObj = this.carList;
		if(dataObj.length>0){
			var smTotal = 0;
			for (var i=0;i<dataObj.length;i++) {
				if(dataObj[i].check){ // 被选中过的
					// 获取数量
					var num = parseInt(dataObj[i].num);
					// 获取单价
					var price = parseFloat(dataObj[i].goodInfo.price);
					smTotal = num*price; //计算小计
					total +=smTotal;
				}
			}
		}
		total = total.toFixed(2)
		return total;
	}
	
	//全选事件
	function allChoice(event){
		if(vm.allCheck){  // 当前全选按钮是被激活的
			vm.allCheck = false;
		}else{
			vm.allCheck = true;
		}
		var dataObj = vm.carList;
		if(dataObj.length>0){
			for (var i=0;i<dataObj.length;i++) {
				dataObj[i].check = vm.allCheck;
			}
		}
		
	}
	
	
	// 判断是否全选
	function isAllCheck(){
		// 需要去判断carList数组中，check为ture的长度是否等于数组的长度，如果等于，说明全选需要激活了
		var dataObj = vm.carList;
		if(dataObj.length>0){
			var len = 0;
			for (var i=0;i<dataObj.length;i++) {
				if(dataObj[i].check){ // 如果等于true
					len++;
				}
			}
			if(len==dataObj.length){ //选中的个数等于数组的长度，说明需要全选了
				vm.allCheck = true;
			}else{
				vm.allCheck = false;
			}
		}else{
			vm.allCheck = false;
		}
	}
	
	
	
	
})
